package com.xbongbong.callback.service;

import com.xbongbong.api.domain.entity.ApiCallbackSetEntity;
import com.xbongbong.paas.pojo.dto.ApiCallBackRetrySwitchDTO;
import com.xbongbong.paas.pojo.dto.ApiCallBackSetDTO;
import com.xbongbong.paas.pojo.vo.ApiCallBackGetVO;
import com.xbongbong.paas.pojo.vo.ApiCallBackSetVO;
import com.xbongbong.paas.pojo.vo.RetrySwitchVO;
import com.xbongbong.paas.pojo.vo.TokenUpdateVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.pro.api.pojo.ApiCallbackSetPojo;

/**
 *
 * @author 魏荣杰
 * @date 2019/10/10 21:53
 * @since
 * @version
 */
public interface ApiCallBackService {

    ApiCallbackSetPojo getCorpApiCallbackUrlByType(String corpid, String type);

    ApiCallbackSetEntity getApiCallbackSet(String corpid);

    /**
     * 设置api回调
     * @author 李少杰
     * @param apiCallBackSetDTO
     * @return
     * @throws XbbException
     */
    ApiCallBackSetVO save(ApiCallBackSetDTO apiCallBackSetDTO) throws XbbException;

    /**
     * 获取回调回显
     * @author 李少杰
     * @param baseDTO
     * @return ApiCallBackSetGetVO
     * @throws XbbException
     */
    ApiCallBackGetVO get(BaseDTO baseDTO) throws XbbException;

    /**
     * 回调配置的token更新
     * @param baseDTO
     * @return
     * @throws XbbException
     * 创建时间 2019/10/10 7:40 PM
     * 修改时间 2019/10/10 7:40 PM
     * @author chy
     * @since v1.1.3
     * @version v1.1.3
     */
    TokenUpdateVO tokenUpdate(BaseDTO baseDTO) throws XbbException;

    /**
     * 回调重发开关
     * @param apiCallBackRetrySwitchDTO
     * @return
     * @throws XbbException
     * 创建时间 2021/12/28 2:45 PM
     * 修改时间 2021/12/28 2:45 PM
     * @author chy
     */
    RetrySwitchVO retrySwitch(ApiCallBackRetrySwitchDTO apiCallBackRetrySwitchDTO) throws XbbException;

    /**
     * T+回调设置
     * @param corpid 公司id
     * @param enable 是否开启
     * 创建时间 2022/1/21 3:11 PM
     * 修改时间 2022/1/21 3:11 PM
     * @author chy
     */
    void tplusApiCallbackSet(String corpid, Integer enable);
}
